-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[COZY-440] fix: 사용자 탈퇴시 탈퇴사유 요청받아서 메일 보내기 #213
Conversation
리뷰해드려요~MailController.java
MailService.java
MemberController.java
WithdrawRequestDTO.java
MemberCommandService.java
SwaggerFilter.java
|
mailService.sendCustomMailToAdmin("제목", "내용"); | ||
return ResponseEntity.ok(ApiResponse.onSuccess(true)); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
관리자에게 메일 보내는 test api 하나 만들어서 메일을 보내봤습니다. 테스트 성공후 바로 @Deprecated
처리 했습니다.
throw new GeneralException(ErrorStatus._MAIL_SEND_FAIL); | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
관리자에게 메일 보내는 함수입니다 일단 제 개인메일주소로 메일을 보냅니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
눈꽃 요구로 cozymate0으로 수정했습니다
public record WithdrawRequestDTO( | ||
@Length(max = 100, message = "탈퇴 사유는 최대 100자") | ||
String withdrawReason | ||
) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
탈퇴시 사용되는 dto입니다. 탈퇴사유는 줄글이라 body로 받습니다.
@@ -39,6 +39,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha | |||
} | |||
Cookie cookie = new Cookie("JWT", jwtUtil.generateAdminToken()); // 쿠키 이름 및 값 설정 | |||
cookie.setHttpOnly(true); // 클라이언트 측 스크립트에서 쿠키를 접근하지 못하게 함 | |||
cookie.setSecure(true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
관리자 토큰 발급할때 Https로 바꿉니다
리뷰해드려요~MailController.java
@PostMapping("/test")
@Operation(summary = "[말즈] 관리자 메일 테스트", description = "관리자에게 메일 보내기 테스트")
@Deprecated
public ResponseEntity<ApiResponse<Boolean>> testMail() {
log.info("controller 진입 성공");
mailService.sendCustomMailToAdmin("제목", "내용");
return ResponseEntity.ok(ApiResponse.onSuccess(true));
} MailService.java
@Value("${spring.mail.username}")
private static final String ADMIN_MAIL_USERNAME = "cozymate0";
private static final String ADMIN_MAIL_DOMAIN = "@gmail.com"; // 관리자 이메일 주소
public void sendCustomMailToAdmin(String subject, String content) {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setTo(ADMIN_MAIL_USERNAME + ADMIN_MAIL_DOMAIN);
helper.setSubject(subject);
helper.setText(content, true); // 전달받은 content를 그대로 전송
mailSender.send(message);
} catch (MessagingException e) {
throw new GeneralException(ErrorStatus._MAIL_SEND_FAIL);
}
} MemberController.java
@DeleteMapping("/withdraw")
public ResponseEntity<ApiResponse<String>> withdraw(
@AuthenticationPrincipal MemberDetails memberDetails,
@Valid WithdrawRequestDTO withdrawRequestDTO) {
memberCommandService.withdraw(withdrawRequestDTO, memberDetails);
return ResponseEntity.ok(ApiResponse.onSuccess("회원 탈퇴가 완료되었습니다."));
} WithdrawRequestDTO.java
public record WithdrawRequestDTO(
@Length(max = 100, message = "탈퇴 사유는 최대 100자")
String withdrawReason
) {
} MemberCommandService.java
private final MailService mailService;
public void withdraw(WithdrawRequestDTO withdrawRequestDTO, MemberDetails memberDetails) {
String withdrawReason = withdrawRequestDTO.withdrawReason();
String mailSubject = memberDetails.member().getNickname() + "탈퇴 사유";
mailService.sendCustomMailToAdmin(mailSubject, withdrawReason);
memberWithdrawService.withdraw(memberDetails.member());
} SwaggerFilter.java
cookie.setSecure(true); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굿
private final AuthService authService; | ||
|
||
@Value("${spring.mail.username}") | ||
private static final String ADMIN_MAIL_USERNAME = "cozymate0"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이거 @value 설정되어있는데, 값이 직접 주입되어있는건 먼가용
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
메일고도화하면서 메일 주소 확정 나면 바꾸려구여
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM~ 문의하기는 피그마 화면이 있어서 db 저장 필요할 거 같고, 신고는 저장 안해도 될 것 같긴한데.. 저는 저장 안할 이유도 잘 모르겠습니다. 누가 신고 몇건 들어왔는지 이런 통계를 낼 일이 생기면 db에 저장해두는게 더 편하지 않을까요?
저도 마찬가지로 문의/신고 부분은 안 할 이유도 없다고 생각하기도 하고, 있는게 전체 관리하기에도 편하다고 생각합니당 |
⚒️develop의 최신 커밋을 pull 받았나요?
네
#️⃣ 작업 내용
사용자 탈퇴 탈퇴 사유 받아서 메일을 보냅니다
Request Body에 string 하나 추가했고 관리자에게 메일 보내는 기능을 추가했습니다.
메일 보내는 test api 하나 추가해서 메일 보내보고
@Deprecated
처리 했습니다.관리자 토큰 만들때 cors오류 방지로 https로 바꿨습니다
동작 확인
💬 리뷰 요구사항(선택)
일단 메일은 제 메일을 사용하고 ses로 메일인증쪽 고도화 하면서 수정하겠습니다.
문의나, 신고도 굳이 DB에 저장할거 없이 관리자에게 메일 보내는 방식으로 수정하는게 어떨까 싶습니다. @veronees